Testing System, and a Method and Computer Program For Testing A System Management Program

ABSTRACT

A testing system for a reverse client-server system management program comprises a server connected to one or more recipient devices and emulating devices through one or more repeaters. The recipient devices act as targets for the management program and the emulating devices emulate one or more of the recipient devices, to enable an assessment of the scalability of the management program to a large number of targets. The repeaters direct management requests from the server to the target devices depending on the configuration of the hook and/or the nature of the operation requested by the management request. The recipient devices and emulating devices execute the required system management operation on receipt of a management request from the server (via the repeaters). The recipient devices and emulating devices generate and transmit a report detailing the outcome of the system management operation.

FIELD OF THE INVENTION

The present invention relates to a testing system, and a method and computer program for testing a system management program.

BACKGROUND OF THE INVENTION

Administrators of enterprise software systems face a particularly troublesome problem in attempting to deploy new applications (e.g. to ensure license compliance) to all the computer devices in their care. For simplicity, the devices to which it may be necessary to deploy new software, will be known henceforth as “recipient devices”. This problem is proving particularly difficult in view of the ever-increasing complexity of today's IT environments and the growing use of pervasive devices (e.g. PDAs). There are a number of enterprise software distribution programs currently available (e.g. IBM's Tivoli Software Distribution program) which enable administrators to install, configure, and update software on networked systems from a single source system, thereby eliminating the need for manually updating software. These software distribution programs can implement “push” (i.e. a reverse client/server [or server-initiated]) or “pull” (client initiated) procedures to identify non-compliant recipient devices and transmit messages thereto to cause disseminated agents on the recipient devices to execute an installation code and thereby update their software. For simplicity, software distribution programs that implement a push procedure or a pull procedure will be known as a “push software distribution program” or a “pull software distribution program” respectively.

In the on-going pursuit of more reliable software, one of the issues that faces software designers, is that of assessing the scalability of the software. More particularly, for a software distribution program, the scalability issue becomes one of determining how the program would react when the number of recipient devices addressable by the tool significantly increases.

Scalability testing can be performed as a series of load tests with different “real-world” hardware or software configurations (henceforth known as “real targets”). Scalability testing may also involve simulating conditions in the application under test. These simulated conditions will be known henceforth as “virtual targets”. The targets for a software distribution program, could include a large number (i.e. 50000-100000) of recipient devices to be addressed by the program.

There are a number of load/stress testing programs currently available (“An Overview of Load Test Tools”, J. Buret and N. Droze, http://clif.objectweb.org/load_tools_overview.pdf) that produce simulated targets (e.g. simulated management requests from several remote clients) for pull software distribution programs. However, none of these load/stress testing programs can simulate targets for push software distribution programs.

In order to evaluate how a push software distribution program would react to a huge number of recipient devices it is usually necessary to simulate the recipient devices (e.g. by starting several processes on the same machine, wherein these processes emulate the target recipient). However, this can be problematic when the footprint of each target (recipient device) is very large, from a memory and/or CPU utilization perspective. In this case, only a small number of recipient devices can be emulated, which reduces the effectiveness of the scalability test.

Similarly, targets may be “virtual” entities wherein an actual operation should be executed by another entity. This may occur, for example, when a request is for a pristine operation (e.g. a base-metal OS installation) to a list of machines that have to be rebuilt from scratch. In this case, the management server is notified only when the reinstallation operation is completed for each target machine (i.e. not when the operation has been started at a pristine server). Thus, there is a set of virtual targets (the machines that have to be re-pristined) and one real physical target (the pristine server) that manages, controls and monitors the execution of the operation on the targets.

While the description so far, has focussed on the problem of testing the scalability of a system for distributing software (or software updates) to a large number of recipient devices, it will be appreciated that the scalability testing problem also applies to any other “reverse client-server” systems management application, where a single node issues requests to a consistent set of target recipient devices to execute a systems management action (e.g. installation of software, a general lifecycle operation on software (e.g. commit, remove, upgrade), hardware or software inventory operation, distributed job scheduling, distributed resource monitoring, etc.).

SUMMARY OF THE INVENTION

According to the invention, there is provided a testing system, and a method and computer program for testing a system management program as provided in the appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

An embodiment of the invention is herein described by way of example only, with reference to the accompanying figures in which:—

FIG. 1 is a block diagram of an exemplary traditional software distribution system;

FIG. 2 is a block diagram of a testing system in accordance with the first embodiment; and

FIG. 3 is a flow-chart of the method of testing a system management program according to the second embodiment.

DETAILED DESCRIPTION

As mentioned above, the scalability testing problem is ubiquitous to any reverse client-server systems management application. Thus, it will be appreciated that whilst the following description focuses on the solution provided for a software distribution program, this scenario is for example purposes only. In particular, the methodology of the second embodiment is equally applicable to any other reverse client-server systems management application and is not restricted to the software distribution program example described below. Accordingly, the methodology of the second embodiment can be generalised to become a method of testing a system management program (rather than being limited to a methodology that is only applicable to the testing of a software distribution program).

Referring to FIG. 1, a traditional software distribution system 10 in a network comprises a distribution server 12 connectable to a one or more repeaters R₁-R₃, wherein the repeaters R₁-R₃ are in turn connectable to a one or more recipient devices D₁-D₅. Thus, the recipient devices D₁-D₅ effectively act as real targets for the traditional software distribution system 10. The repeaters are intermediate servers, each of which directly manages a group of targets (i.e. it could be a Gateway in a Tivoli Framework environment). Since the present embodiments are extendable to any reverse client-server systems management application, it will be noted that any such reverse client-server systems management system has the same overall hardware topology as that mentioned above (i.e. a server connectable to a one or more recipient devices through a one or more repeaters).

Referring to FIG. 2, a testing system 100 for a software distribution program (or any other reverse client-server systems management application) comprises a traditional software distribution environment, including, for example, a distribution server 112 which houses the software distribution system and one or more repeaters R₁-R₃ and recipient devices D₁-D₅. As before, the recipient devices D₁-D₅ effectively act as real targets for the software distribution system. However, in order to test the scalability of the software distribution system (or any other reverse client-server systems management application), it is necessary to determine how the software distribution system (or any other reverse client-server systems management application) will behave when faced with a larger number of targets. Thus, the testing system also provides a number of virtual targets for the software distribution system.

The distribution server 112 is modified by the addition of a virtualization layer 20 and each repeater R₁-R₃ is provided with a hook (Hook₁, Hook₂, Hook₃). In use, the virtualization layer 20 divides a list of potential targets for the software distribution system into two groups. The first group contains all the real targets and the second group contains the virtual targets. This grouping can be done by verifying whether or not each potential target is already defined in the software distribution environment. Alternatively, the grouping could be performed by using a configuration file containing a list of all the available virtual targets, wherein if a potential target is contained in this list it is automatically designated as a simulated target.

A hook is a program which is invoked on receipt of a management request from the distribution server 112. Depending on the hook's configuration and the nature of the operation requested by the management request, a hook code is generated which specifies whether the management request should be transmitted to a real target or a virtual Target Manager. Thus, hooks enable different types of situations to be simulated. For example, a hook code can specify a fault (e.g. no disk space, target not reachable etc.) in addition to targets for the software distribution system.

Referring to FIGS. 2 and 3, a first phase of a method of testing a system management program is conducted in the distribution server 112. More particularly, the first phase comprises the steps of:

-   -   installing (30) and registering the system management program on         the distribution server 112;     -   grouping (32) real targets for the system management program         according to their repeaters (R₁-R₃);     -   assigning (34) virtual targets to the repeaters (R₁-R₃), and         setting (36) a flag (called distribution_mode), which instructs         the repeaters (R₁-R₃) to consider the targets as “virtual”         targets; and     -   sending (38) each repeater (R₁-R₃) a management request for a         particular type of system management operation, data necessary         for the operation; and a list of real and/or virtual targets for         the operation.

Upon receiving a management request and an associated target list from the distribution server 112, each repeater (R₁-R₃) performs an operation comprising the following steps:

-   -   checking (40) the management request's distribution_mode flag;     -   pushing (42) the request to the real targets (D₁-D₅) specified         in the distribution list; and triggering (44) the execution of         the operation on these real targets (D₁-D₅), in the event that         the value of the distribution_mode flag is set to REAL or is         unspecified;     -   looking up internal tables in the repeater (R₁-R₃) to find (46)         the hook (Hook₁, Hook₂, Hook₃) that has been defined for that         kind of operation and requesting the hook (Hook₁, Hook₂, Hook₃)         to forward (48) the request to an appropriate Virtual Target         Manager, in the event that the value of the distribution_mode         flag is set to VIRTUAL.

On receipt of a management request, the Virtual Target Manager performs the following steps:

-   -   executing (50) the system management operation requested in the         management request; or simulating the execution of the system         management operation depending on its configuration; and     -   returning (52) a report on the outcome of the system management         operation to the repeater (R₁-R₃).

Similarly, after executing a system management operation specified in a management request, each of the real targets (D₁-D₅) returns (54) a report to the repeater (from which the management request was sent), wherein the report contains information about the outcome of the system management operation for the real target (D₁-D₅).

The repeaters (R₁-R₃) then transmit (56) the reports (received from both the real targets and from the Virtual Target Manager) back to the distribution server 112, wherein the reports may be transmitted individually to the distribution server 112, or grouped together and transmitted in one shot to the distribution server 112. Upon receiving the reports from the repeaters (R₁-R₃), the distribution server 112 updates (58) the status of the operation in its central repository until the operation is completed for all the targets registered for it.

Modifications and alterations may be made to the above without departing from the scope of the invention. 

1. A testing system for a system management program, wherein the testing system comprises a server with a one or more repeaters connected thereto; and a one or more recipient devices and emulating devices connected to the repeaters, the emulating devices being configured to emulate a one or more of the recipient devices comprising: characterised in that the server is provided with a targeting means configured to provide a one or more target devices for the system management program, wherein the targeting means is configured to select the target devices from the recipient devices and the emulating devices; and to group the target devices accordingly; the repeaters are provided with a one or more control means configured to direct a one or more messages transmitted by the server to the target devices; wherein the recipient devices and emulating devices are provided with an execution means configured to execute a system management operation included in a message from the server on receipt of the message by the recipient devices and emulating devices; and wherein the recipient devices and emulating devices are further provided with a means of generating a report detailing the outcome of the system management operation and a means of transmitting the report to the server.
 2. A software distribution program testing system, comprising the testing system of claim 1, wherein the system management program is a software distribution program and the system management operation is a software installation operation.
 3. A method of testing a system management program, the method comprising the steps of: determining a first class of devices on whom a system management operation is to be performed; determining a second class of devices on whom the system management operation is to be performed, the second class of devices being emulated by a one or more emulating devices; setting a flag in a one or more messages to be issued by the server, wherein the flag indicates whether the intended recipient of the message is a device in the first class or the second class; issuing the messages; directing the messages whose flags indicate that the intended recipients are members of the first class, to devices that are members of the first class; determining an appropriate emulating device to which to send the messages whose flags indicate that the intended recipients are members of the second class, and sending the messages to the emulating devices determined therefor; executing the system management operation on the first class of devices and emulating devices; returning a one or more reports to the server regarding an outcome of the system management operation; and updating a status of the server in accordance with the one or more reports.
 4. The method as claimed in claim 3 wherein the steps of directing the messages whose flags indicate that the intended recipients are members of the first class, to devices that are members of the first class; and determining an appropriate emulating device to which to send the messages whose flags indicate that the intended recipients are members of the second class, and sending the messages to the emulating devices determined therefor; are performed in a one or more repeater devices which are connected between the server and the devices in the first class and the emulating devices.
 5. The method as claimed in claim 4, wherein the step of determining a first class of devices on whom the system management operation is to be performed involves grouping devices in the first class according to the repeater devices to which they are connected.
 6. The method as claimed in claim 4, wherein the step of determining a second class of devices on whom the system management operation is to be performed, involves assigning devices from the second class to a one or more of the repeater devices.
 7. The method as claimed in claim 4, wherein the step of determining an appropriate emulating device to which to send the messages whose flags indicate that the intended recipients are members of the second class, and sending the messages to the emulating devices determined therefor; comprises the steps of: looking up internal tables in a one or more of the repeater devices to find an appropriate software tool for an operation specified in the messages; and requesting the software tool to forward the messages to the emulation devices.
 8. The method as claimed in claim 4, wherein the step of returning a one or more reports to the server comprises the steps of: transmitting the one or more reports to a one or more of the repeater devices; and transmitting the one or more reports from the repeater devices to the server.
 9. The method as claimed in claim 8, wherein the reports are transmitted to the server individually or collectively.
 10. A method of testing a software distribution program comprising the steps of the method as claimed in claim 3, wherein the system management operation is an installation of the software and the step of executing the system management operation on the first class of devices and emulating devices comprises a step of installing the software on the first class of devices and emulating devices.
 11. A computer program comprising program code means for performing a method for testing a system management program when the computer program is executed on a data processing system, the method comprising the steps of: determining a first class of devices on whom a system management operation is to be performed; determining a second class of devices on whom the system management operation is to be performed, the second class of devices being emulated by a one or more emulating devices; setting a flag in a one or more messages to be issued by the server, wherein the flag indicates whether the intended recipient of the message is a device in the first class or the second class; issuing the messages; directing the messages whose flags indicate that the intended recipients are members of the first class, to devices that are members of the first class; determining an appropriate emulating device to which to send the messages whose flags indicate that the intended recipients are members of the second class, and sending the messages to the emulating devices determined therefor; executing the system management operation on the first class of devices and emulating devices; returning a one or more reports to the server regarding an outcome of the system management operation; and updating a status of the server in accordance with the one or more reports.
 12. (canceled) 